package wodegua.d31_java高级.d4_proxy;

/**
 * 程序为什么需要代理?代理长什么样?
 * 对象如果嫌身上干的事太多的话可以通过代理来转移部分职责。
 * 对象有什么方法想被代理，代理就一定要有对应的方法
 *
 * 如何为Java对象创建一个代理对象?
 * ●java.lang.reflect.Proxy类:提供了为对象产生代理对象的方法
 *
 * public static object newProxyInstance(classLoader loader, class<?>[1 interfaces, InvocationHandler h)
 * 参数一:用于指定用哪个类加载器，去加载生成的代理类
 * 参数二:指定接口，这些接口用于指定生成的代理长什么，也就是有哪些方法
 * 参数三:用来指定生成的代理对象要干什么事情
 */
public class Test {
    public static void main(String[] args) {
        BigStar s = new BigStar("杨超越");
        Star star = ProxyUtil.createProxy(s);

        String rs = star.sing("好日子");
        System.out.println(rs);

        System.out.println("----------------------------------");

        star.dance("最炫民族风");
    }
}
